acelera1 <- read.csv( "Camino a la oficina Grabaci_n 1.csv")
Aceleración en X
library(ggplot2)
ggplot(acelera1, aes(fecha, AccX)) +
geom_line()
## Warning: Removed 1 rows containing missing values (geom_path).

Aceleración en Y
library(ggplot2)
ggplot(acelera1, aes(fecha, AccY)) +
geom_line()

Aceleración en Z
library(ggplot2)
ggplot(acelera1, aes(fecha, AccZ)) +
geom_line()
## Warning: Removed 1 rows containing missing values (geom_path).

summary(acelera1)
## timestamp AccX AccY AccZ
## Min. :1.509e+12 Min. :-14.704 Min. :-22.911 Min. :-31.803
## 1st Qu.:1.509e+12 1st Qu.: 1.693 1st Qu.:-11.307 1st Qu.: -4.074
## Median :1.509e+12 Median : 2.841 Median : -8.546 Median : -2.767
## Mean :1.509e+12 Mean : 2.699 Mean : -8.463 Mean : -2.671
## 3rd Qu.:1.509e+12 3rd Qu.: 4.050 3rd Qu.: -5.888 3rd Qu.: -1.543
## Max. :1.509e+12 Max. : 9.193 Max. : 5.687 Max. : 13.928
## NA's :1038 NA's :1007 NA's :1019
## fecha
## Min. :2017-10-26 05:47:48
## 1st Qu.:2017-10-26 05:48:10
## Median :2017-10-26 05:49:56
## Mean :2017-10-26 05:49:37
## 3rd Qu.:2017-10-26 05:50:54
## Max. :2017-10-26 05:51:50
##
Cálculo de la aceleración promedio por décimas de segundo
library(dplyr)
acelera1_2 <- acelera1 %>%
mutate(tiempo = timestamp %/% 100) %>%
group_by(tiempo) %>%
summarise(AccX = mean(AccX, na.rm = TRUE),
AccY = mean(AccY, na.rm = TRUE),
AccZ = mean(AccZ, na.rm = TRUE))
Gráfica conjunta por décimas de segundo
matplot(acelera1_2$tiempo, acelera1_2[, 2:4], type = "l")

Cálculo de la aceleración total
library(dplyr)
acelera1_2 <- acelera1_2 %>%
mutate(accT = sqrt(AccX ^ 2 + AccY ^ 2 + AccZ ^ 2))
library(ggplot2)
ggplot(acelera1_2, aes(tiempo, accT)) + geom_line()

Verificación de cambios en periodos de tiempo
diff(acelera1_2$tiempo)
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [18] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [35] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [52] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [69] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [86] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [103] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [120] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [137] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [154] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [171] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [188] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [205] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [222] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [239] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [256] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [273] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [290] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [307] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [324] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [341] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [358] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [375] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [392] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [409] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [426] 1 1 1 1 1 8 1 1 49 1 1 1 1 1 1 1 1
## [443] 1 91 1 1 1 1 1 1 3 1 1 89 1 1 1 1 1
## [460] 1 1 1 1 61 1 1 1 1 1 1 1 1 1 1 1 1
## [477] 1 1 1 1 1 1 1 111 1 1 1 1 1 1 1 1 1
## [494] 1 1 1 1 1 1 1 1 173 1 1 1 1 1 1 1 1
## [511] 1 4 1 1 1 1 1 51 1 1 1 1 1 1 44 1 1
## [528] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [545] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [562] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [579] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [596] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [613] 1 1 1 1 1 1 1 37 1 1 1 1 1 1 1 1 1
## [630] 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [647] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [664] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [681] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [698] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [715] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [732] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [749] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [766] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [783] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [800] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [817] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [834] 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1
## [851] 1 2 1 1 2 1 1 28 2 1 1 1 1 1 154 1 1
## [868] 1 87 1 1 1 1 1 1 1 32 1 1 1 1 1 1 1
## [885] 1 1 1 1 1 1 1 1 1 144 1 1 1 1 1 1 1
## [902] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [919] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [936] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [953] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [970] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [987] 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1004] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1021] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1038] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1055] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1072] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1089] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1106] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1
## [1123] 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1
## [1140] 1 1 1 1 1 1 1
cambios <- which(diff(acelera1_2$tiempo) != 1)
cambios
## [1] 431 434 444 451 454 464 484 502 512 518 525 620 630 843
## [15] 852 855 858 859 865 869 877 894 989 1120 1135
Selección de un segmento “completo”
acelera1_s1 <- acelera1_2[1:cambios[1], ]
Gráfica de la aceleración total en un segmento de tiempo.
ggplot(acelera1_s1, aes(tiempo, accT)) + geom_line()

Periodograma
spec1_s1 <- spec.pgram(acelera1_s1$accT, las = 1)

Selección de la frecuencia con el valor máximo del espectro.
maxFrec1_s1 <- spec1_s1$freq[which(spec1_s1$spec == max(spec1_s1$spec))]
maxFrec1_s1
## [1] 0.2037037
Cálculo del tiempo total y números de periodos.
tiempoS1 <- diff(range(acelera1_s1$tiempo))
numPeriodos <- tiempoS1 * maxFrec1_s1
tiempoS1
## [1] 430
numPeriodos
## [1] 87.59259
tiempoT <- diff(range(acelera1_2$tiempo))
numPeriodos <- tiempoT * maxFrec1_s1
tiempoT
## [1] 2416
numPeriodos
## [1] 492.1481
Cálculo de la longitud del paso
distancia1 <- 301.20
longPaso1_s1 <- 301.20/numPeriodos
longPaso1_s1
## [1] 0.6120108
Análisis del segundo segmento
acelera1_s2 <- acelera1_2[cambios[13]:cambios[14], ]
ggplot(acelera1_s2, aes(tiempo, accT)) + geom_line()

spec1_s2 <- spec.pgram(acelera1_s2$accT, las = 1)

maxFrec1_s2 <- spec1_s2$freq[which(spec1_s2$spec == max(spec1_s2$spec))]
maxFrec1_s2
## [1] 0.2037037
tiempoS2 <- diff(range(acelera1_s2$tiempo))
numPeriodos <- tiempoS2 * maxFrec1_s2
tiempoS2
## [1] 222
numPeriodos
## [1] 45.22222
tiempoT <- diff(range(acelera1_2$tiempo))
numPeriodos <- tiempoT * maxFrec1_s2
tiempoT
## [1] 2416
numPeriodos
## [1] 492.1481
distancia1 <- 301.20
longPaso1_s2 <- 301.20/numPeriodos
longPaso1_s2
## [1] 0.6120108
Análisis del tercer segmento
acelera1_s3 <- acelera1_2[cambios[22]:cambios[23], ]
(pos <- which(is.na(acelera1_s3$accT)))
## [1] 2
acelera1_s3 <- acelera1_s3[3:nrow(acelera1_s3), ]
ggplot(acelera1_s3, aes(tiempo, accT)) + geom_line()

spec1_s3 <- spec.pgram(acelera1_s3$accT, las = 1)

maxFrec1_s3 <- spec1_s3$freq[which(spec1_s3$spec == max(spec1_s3$spec))]
maxFrec1_s3
## [1] 0.1979167
tiempoS3 <- diff(range(acelera1_s3$tiempo))
numPeriodos <- tiempoS3 * maxFrec1_s2
tiempoS3
## [1] 93
numPeriodos
## [1] 18.94444
tiempoT <- diff(range(acelera1_2$tiempo))
numPeriodos <- tiempoT * maxFrec1_s2
tiempoT
## [1] 2416
numPeriodos
## [1] 492.1481
distancia1 <- 301.20
longPaso1_s3 <- 301.20/numPeriodos
longPaso1_s3
## [1] 0.6120108
Análisis conjunto del primer segemento
(prom_maxFrec1 <- mean(c(maxFrec1_s1, maxFrec1_s2, maxFrec1_s3)))
## [1] 0.2017747
(ds_maxFrec1 <- sd(c(maxFrec1_s1, maxFrec1_s2, maxFrec1_s3)))
## [1] 0.003341147
(tiempoTotal <- acelera1$fecha[nrow(acelera1)] - acelera1$fecha[1])
## Time difference of 4.027783 mins
(numPeriodosT <- as.vector(tiempoTotal)*60*10 * prom_maxFrec1)
## [1] 487.6228
(longPasoP1 <- distancia1/as.vector(numPeriodosT))
## [1] 0.6176905
Lecturas de las bases de datos
Mapa del camino 3
camino2 <- read.csv("Camino a la oficina 2 Grabaci_n 1.csv")
camino3 <- read.csv("Salida de la un_versidad Grabaci_n 1.csv")
distancia2 <- 90.85
distancia3 <- 234.08
library(dplyr)
camino2 <- camino2 %>%
mutate(fecha= as.POSIXct(timestamp/1000, origin = "1970-01-01"))
camino2_1 <- camino2 %>%
mutate(tiempo = timestamp %/% 100) %>%
group_by(tiempo) %>%
summarise(AccX = mean(AccX, na.rm = TRUE),
AccY = mean(AccY, na.rm = TRUE),
AccZ = mean(AccZ, na.rm = TRUE))
camino2_1 <- camino2_1 %>%
mutate(accT = sqrt(AccX ^ 2 + AccY ^ 2 + AccZ ^ 2))
library(dplyr)
camino3 <- camino3 %>%
mutate(fecha= as.POSIXct(timestamp/1000, origin = "1970-01-01"))
camino3_1 <- camino3 %>%
mutate(tiempo = timestamp %/% 100) %>%
group_by(tiempo) %>%
summarise(AccX = mean(AccX, na.rm = TRUE),
AccY = mean(AccY, na.rm = TRUE),
AccZ = mean(AccZ, na.rm = TRUE))
camino3_1 <- camino3_1 %>%
mutate(accT = sqrt(AccX ^ 2 + AccY ^ 2 + AccZ ^ 2))
Procesamiento del camino 2
library(ggplot2)
ggplot(camino2_1, aes(tiempo, accT)) + geom_line()

spec2 <- spec.pgram(camino2_1$accT, las = 1)

maxFrec2 <- spec2$freq[which(spec2$spec == max(spec2$spec))]
maxFrec2
## [1] 0.2041667
tiempoTotal_camino2 <- camino2$fecha[nrow(camino2)] - camino2$fecha[1]
as.vector(tiempoTotal_camino2) * 600
## [1] 713.1
as.vector(tiempoTotal_camino2) * 600 * maxFrec2
## [1] 145.5912
(longPaso2 <- distancia2/(as.vector(tiempoTotal_camino2) * 600 * maxFrec2))
## [1] 0.6240073
Procesamiento del camino 3
library(ggplot2)
ggplot(camino3_1, aes(tiempo, accT)) + geom_line()

spec3 <- spec.pgram(camino3_1$accT, las = 1)

maxFrec3 <- spec3$freq[which(spec3$spec == max(spec3$spec))]
maxFrec3
## [1] 0.19625
tiempoTotal_camino3 <- camino3$fecha[nrow(camino3)] - camino3$fecha[1]
as.vector(tiempoTotal_camino3) * 600
## [1] 1587.32
as.vector(tiempoTotal_camino3) * 600 * maxFrec3
## [1] 311.5116
(longPaso3 <- distancia3/(as.vector(tiempoTotal_camino3) * 600 * maxFrec3))
## [1] 0.7514328
Cálculo del tamaño de muestra
(mediaLongPasos <- mean(c(longPaso1_s1, longPaso1_s2,
longPaso1_s3, longPaso2, longPaso3)))
## [1] 0.6422945
(desvestPasos <- sd(c(longPasoP1, longPaso2, longPaso3)))
## [1] 0.07545879
Tamaños de la muestra
library(pwr)
diferencia <- 0.05
d <- diferencia/desvestPasos
potencia1 <- pwr.t.test(d = d, power = 0.8)
potencia1$n
## [1] 36.73882
library(pwr)
potencia2 <- pwr.t.test(n = 50, power = 0.8)
d <- potencia2$d
(diferencia <- desvestPasos * d)
## [1] 0.04269896